Week Overview Mon – Thu: Labs · Fri: Review + VM health check

Containers from first principles — and a capstone that ties the whole course together

Week 6 introduces containers — a fundamentally different approach to application deployment compared to the VMs students have worked with all course. Where a VM virtualises hardware, a container shares the host kernel and isolates only the application and its dependencies. The result: containers start in seconds, use a fraction of the memory, and pack dozens of applications onto a single server.

The week moves quickly from theory to production use. By Tuesday, students have Docker installed and running real containers with port mapping and persistent storage. Wednesday introduces docker-compose for multi-container orchestration. Thursday is the capstone: a full service stack where the Nginx server from Week 4 acts as a reverse proxy sitting in front of a Dockerised web application, resolved by the DNS zone from Week 3. Students who have kept their VMs in good health arrive at this lab with everything pre-built — they just connect the pieces.

Friday is not assessed. It is review day before the final exam — structured Q&A, a service health check on all VMs, and exam format walkthrough. Students leave with every service from Weeks 1–6 running cleanly and a clear picture of what the practical exam will ask them to do.

Week at a glance

Monday
Container Concepts & Docker Install

VMs vs containers, namespaces/cgroups, install Docker, hello-world, docker ps/images/run, interactive containers (Lab 6A)

Tuesday
Images, Port Mapping & Volumes

Docker Hub search, port binding (-p), bind mounts (-v), container logs, docker exec, networks (Lab 6B)

Wednesday
docker-compose

YAML syntax, services/networks/volumes, bring up and down, logs, scaling, restart policies (Lab 6C)

Thursday
Capstone — Nginx + Docker Stack

Deploy a containerised web app, configure Nginx proxy_pass, update DNS record, verify end-to-end (Lab 6D)

Friday
Course Review & VM Health Check

Cumulative Q&A, all services verified running, exam format walkthrough, lab catch-up

Learning Outcomes By end of Week 6, students can…
Explain containers vs VMsDescribe how namespaces and cgroups implement container isolation without a separate kernel, and compare to hypervisor-based virtualisation
Install and operate DockerInstall docker.io, verify with docker info, pull images, run containers, and use docker ps, docker images, docker logs, and docker exec
Manage container lifecycleStart, stop, restart, and remove containers; distinguish between an image and a running container; use named containers
Map ports and bind volumesUse -p to expose container ports on the host and -v to mount host directories into containers for persistent storage
Write docker-compose filesDefine multi-container stacks in YAML with services, port mappings, volume mounts, networks, and restart policies
Configure Nginx as a reverse proxyUse proxy_pass in a location block to forward requests to a Docker container, completing the Week 4 Nginx + Week 6 Docker integration
Verify all course servicesConfirm SSH, NAT, NTP, DNS, DHCP, Nginx, and VPN are all running correctly before the final exam
Monday Lecture + Lab 6A · 2 hrs

Container concepts, Docker install, and the first containers

0:00–0:30
Lecture
0:30–1:50
Lab 6A
1:50–2:00
Debrief
Instructor note: The doom-in-docker exercise is deliberately fun — it demonstrates a real GUI application running in a container and accessible through a browser, making the "containers are just processes" abstraction concrete. Let students spend a few minutes on it before moving on.
Tuesday Lab 6B · 2 hrs

Port mapping, bind mounts, container logs, exec, and Docker networking

0:00–0:10
Recap
0:10–1:50
Lab 6B
1:50–2:00
Debrief
Wednesday Lecture + Lab 6C · 2 hrs

docker-compose — multi-container orchestration and restart policies

0:00–0:10
Recap
0:10–0:40
Lecture
0:40–1:50
Lab 6C
1:50–2:00
Debrief
Thursday Lab 6D — Capstone · 2 hrs

Nginx reverse proxy in front of a Docker web application — the course capstone

0:00–0:10
Recap
0:10–1:45
Capstone
1:45–2:00
Debrief
⭐ Capstone architecture — the full chain
  • Browser requests https://app.yourname.net
  • DNS (Week 3): app.yourname.net → S1's external IP (172.17.x.x)
  • Nginx (Week 4): listens on 443, matches server_name app.yourname.net, applies SSL
  • proxy_pass (Week 6): Nginx forwards the request to http://127.0.0.1:8080
  • Docker (Week 6): container on port 8080 handles the request and returns a response
  • Response travels back: container → Nginx → browser, all over HTTPS
Friday Course Review & VM Health Check · 2 hrs · No assessment

Cumulative review, all services verified running, exam format walkthrough

0:00–0:40
Review
0:40–1:40
VM Health Check
1:40–2:00
Exam Walkthrough

Friday VM health check — all services must be running before the final exam

ServiceWeek coveredVerification commandExpected result
SSH — key auth on custom portWeek 1ssh -p [port] student@[S1-IP]Connects without password prompt
NAT routing — S2 to internetWeek 1ping 8.8.8.8 from S2Replies received
NTP — all servers synced to S1Week 2timedatectl timesync-status on S2/S3ServerName = S1's IP, stratum 3
DNS — forward and reverse zonesWeek 3dig @S1 s1.yourname.net; dig -x S1-IPCorrect A and PTR records returned
DHCP — reservation for S2Week 3cat /var/lib/dhcp/dhcpd.leasesS2 MAC with 192.168.50.2 reservation
Nginx — HTTPS with 301 redirectWeek 4curl -v http://yourname.net301 redirect to https://
VPN — IPSec or WireGuard tunnelWeek 5sudo ipsec status or sudo wg showSA up / handshake timestamp shown
Docker — capstone stack runningWeek 6docker-compose psAll services Up

What you need ready before Monday

All three VMs running with Week 5 services intact Lab 6A, 6B, 6C, 6D handouts printed Docker Hub accessible (internet from S1) Capstone web app image decided (nginx, httpd, or simple Flask app) Friday VM health check checklist on the board
← Week 5 Day 1 Lesson Plan → Week 7 (Final) → Course Outline